package com.efrei.schoolmanager.model.hibernate.dao;

import java.util.List;

import org.hibernate.Session;

import com.efrei.schoolmanager.exceptions.LogicException;
import com.efrei.schoolmanager.model.dao.HibernateDAO;
import com.efrei.schoolmanager.model.obj.Matiere;

/**
 * DAO pour les matieres avec hibernate
 */
public class MatiereDAO extends HibernateDAO<Matiere> {

	public MatiereDAO(Session session) {
		super(session, Matiere.class);
	}

	public List<Matiere> getMatieres() {
		return content("FROM Matiere ORDER BY nom");
	}

	/**
	 * recupere la matiere en base
	 * 
	 * @param matiere
	 * @return Matiere
	 * @throws LogicException
	 */
	@SuppressWarnings("unchecked")
	public Matiere searchMatiere(String matiere) throws LogicException {
		List<Matiere> matieres = getSession().createQuery("FROM Matiere WHERE nom=:nom")
				.setString("nom", matiere)
				.list();
		if(matieres.isEmpty())
			throw new LogicException("matiere "+matiere+" non trouvée en base");
		return matieres.get(0);
	}
}
